// 环境配置文件示例
// 复制此文件为 config.js 并修改相应配置

export const config = {
  // 数据库配置
  database: {
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: '245541zaqQ', // 请修改为您的MySQL密码
    database: 'newton_rollcall',
    charset: 'utf8mb4',
    timezone: '+08:00'
  },

  // JWT配置
  jwt: {
    secret: 'newton_school_jwt_secret_key_2024', // 生产环境请使用更复杂的密钥
    expiresIn: '24h'
  },

  // 服务器配置
  server: {
    port: 3000,
    env: 'development' // development | production
  },

  // CORS配置
  cors: {
    origin: ['http://localhost:5173', 'http://127.0.0.1:5173'],
    credentials: true
  },

  // 应用配置
  app: {
    name: 'Newton校园考勤系统',
    version: '1.0.0',
    description: 'School Attendance Management System'
  },

  // 安全配置
  security: {
    saltRounds: 10, // bcrypt加密轮数
    maxLoginAttempts: 5, // 最大登录尝试次数
    lockoutTime: 30 * 60 * 1000 // 账号锁定时间（毫秒）
  },

  // 文件上传配置
  upload: {
    maxFileSize: 10 * 1024 * 1024, // 10MB
    allowedTypes: ['image/jpeg', 'image/png', 'image/gif', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
    uploadDir: './uploads'
  },

  // 日志配置
  logging: {
    level: 'info', // debug | info | warn | error
    file: './logs/app.log',
    maxsize: 10 * 1024 * 1024, // 10MB
    maxFiles: 5
  },

  // 邮件配置（可选）
  email: {
    host: 'smtp.example.com',
    port: 587,
    secure: false,
    auth: {
      user: 'your-email@example.com',
      pass: 'your-email-password'
    }
  },

  // 短信配置（可选）
  sms: {
    provider: 'aliyun', // aliyun | tencent
    accessKeyId: 'your-access-key-id',
    accessKeySecret: 'your-access-key-secret',
    signName: 'Newton学校',
    templateCode: 'SMS_123456789'
  }
}

// 根据环境变量覆盖配置
if (process.env.NODE_ENV === 'production') {
  config.server.env = 'production'
  config.logging.level = 'warn'
  config.database.host = process.env.DB_HOST || config.database.host
  config.database.password = process.env.DB_PASSWORD || config.database.password
  config.jwt.secret = process.env.JWT_SECRET || config.jwt.secret
}

export default config
